<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // function Person(){
        //     this.name = name;
        //     this.age = age;
        //     return 1
        // }

        // Person.prototype.do = function(){
        //     console.log('react')
        // }

        // //手写new的函数
        // function myNew(constr,...arg){
        //     //1.创建一个对象
        //     const obj ={}
        //     //2.修改this指向
        //     const re =constr.apply(obj,arg)
        //     //3.把obj的隐式原型指向构造函数的原型对象
        //     obj._proto_=constr.prototype
        //     //4.返回值的判断
        //     if(typeof re === 'object'&& re!==null||typeof re==='function'){
        //         return re
        //     }else{
        //         return obj
        //     }
        // }

        // const p1 = myNew(Person,'laowang',18)
        // console.log(p1,'p1')




        function Person(){
            this.name =name
            this.age =age
            return 1
        }
        Person.prototype.do = function(){
            console.log('哈哈哈哈')
        }

        function myNew(constr,...arg){
            //1.定义一个对象
            const obj ={}
            //2.修改this 
          const res =  constr.apply(obj,arg)
            //3.
            obj._proto_=constr.prototype
            //4.返回值
            if(typeof res==='object'&& res!== null || typeof res ==='function') {
                    return res

            }else{
                return obj
            }


        }
        const p1 = myNew(Person,'高高',18)
    </script>
</body>
</html>